<?php if (!defined("DB_PEREFIX")) exit;

global $db, $template, $RUN,$GLOBAL_USER, $SITE;

if (isset($_GET['id'])) $id = intval ($_GET['id']);

// Если запрос на удаление письма
if ($RUN['params'][0] == 'delete') 
{
	$delete = $db->query ("DELETE FROM ".DB_PEREFIX."_messages 
		WHERE mes_id = '".intval($_GET['id'])."' AND mes_user = '".$GLOBAL_USER['user_id']."'");

	// TODO: Перенести во флэш, потому как дальше идет редирект
	if ($delete) 
		site_message ( _l('message_deleted') );
	else 
		site_errror ( _l('err_db') );
		
	// Перенаправляем на страницу списка сообщений
	redirect('user/messages');		
}


// Если страница создания сообщения
if ($RUN['params'][0] == 'write') 
{
	// Если присланы данные для отправки сообщения
	if (isset($_POST['submit'])) 
	{
		// Обрабатываем присланые данные 
		$user = intval ($_POST['user']);
		$header = strip_tags ($_POST['header']);
		$body = strip_tags(htmlspecialchars($_POST['body'], ENT_QUOTES));
		$body = htmlspecialchars($body);
		$body = replace_symbols ($body);
		$code = $_POST['code'];
		
		// Строка для хранения ошибок
		$error = '';
	
		// Проверяем есть ли такой друг у пользователя
		if (!isset_friend($user)) 
			$error .= '<li>' . _l('err_friend');

		// Если заголовок письма не передан то устанавливаем <без темы>
		// TODO: Не храним стандартную тему а при выводе с пустой подставляем <без темы>
		if ($header == '') 
			$header =  _l('message_no_subject');

		// Проверяем прислан ли текст сообщения
		if ($body == '') 
			$error .= '<li>' . _l('err_body') ;

		// Если ошибок не выявлено
		if ($error == '') 
		{
			// Добавляем сообщение
			$send = $db->query ("INSERT INTO ".DB_PEREFIX."_messages 
				(mes_user, mes_author, mes_header, mes_body, mews_date, mes_read) VALUES 
				('$user', '".$GLOBAL_USER['user_id']."', '$header', '$body', '".time()."', 'new')");

			// Если сообщение добавлено 
			if ($send) 
			{
				// TODO: Перенести во флэш, потому как дальше идет редирект
				site_message (_l('messages_send_ok'));
				
				// Загружаем информацию о получателе
				$user = $db->fetch_array (
					$db->query ("SELECT user_name, user_email 
						FROM ".DB_PEREFIX."_users 
						WHERE user_id = '$user';"));
				
				// Подготавливаем письмо для отправки
				$data = array (
								'name'	=> $user['user_name'],
								'from'	=> $GLOBAL_USER['user_name'],									
								'url'	=> anchor('user/messages', $SITE['site_url'].'user/messages/'),
								'site'	=> anchor('',$SITE['site_name'])
								);
				
				// Сохраняем в переменную результат обработки представления	
				$body = load_module_view('user', 'mail/new_message', $data, true);
				
				// Отправляем письмо
				send_mail ($user['user_email'], 
					$SITE['site_name'].': '._l('message_new_from').' '.$GLOBAL_USER['user_name'], 
					n2br($body));
					
				// Перенаправляем на страницу списка сообщений
				redirect('user/messages');
			}
			else 
				site_error (_l('messages_send_fail'));
		}
		else 
			site_error ($error);
	}

	// Если отвечаем на письмо то добавляем приставку RE:
	if (isset($_GET['subject'])) 
		$title = 'Re: '.htmlspecialchars ($_GET['subject'], ENT_QUOTES);
	else 
		$title = htmlspecialchars ($_POST['header'], ENT_QUOTES);
	
	$PAGE_TITLE = _l('messages_new_short');
	
	$data = array(
					'friends' => get_friends($GLOBAL_USER['user_id']),
					'subject' => $title
				);					
				
	// Выводим представление 
	load_module_view('user', 'message_new',  $data);
}

// Если просматриваем определенное сообщение
if (isset($_GET['id']) && $RUN['params'][0] == '') 
{
	// Загружаем просматриваемое сообщение
	$get_mes = $db->query ("SELECT m.*, u.user_name
		FROM ".DB_PEREFIX."_messages AS m
		LEFT JOIN ".DB_PEREFIX."_users AS u ON (u.user_id = m.mes_author)
		WHERE mes_id = '$id'");

	// Если сообщение существует
	if ($db->num_rows ($get_mes) == 1) 
	{
		// Получаем данные сообщения
		$message = $db->fetch_array($get_mes);
	
		// Если сообщение не прочитано то помечаем
		if ($message['mes_read'] == 'new')
		{
			$db->query ("UPDATE ".DB_PEREFIX."_messages SET mes_read = 'old' WHERE mes_id = '$id'");
		}
		
		$data = array (
						'mess_id'	=> $message['mes_id'],		
						'from_id'	=> $message['mes_author'],
						'from_name'	=> $message['user_name'],
						'date'		=> format_time($message['mews_date']),						
						'friend'	=> isset_friend($message['mes_author']),
						'subject'	=> $message['mes_header'],
						'body'		=> n2br(replace_symbols ($message['mes_body']))
						);

		// Выводим представление 
		load_module_view('user', 'message_view',  $data);

	}
	else 
		site_errror (_l('err_bd'));
}
// Если данные не присланы то выводим список сообщений
elseif ($RUN['params'][0] == '') 
{
	// TODO: Создать кэш
	// Всего сообщений
	$total = $db->fetch_array(
				$db->query ("SELECT COUNT(*) AS total
					FROM ".DB_PEREFIX."_messages 
					WHERE mes_user = '".$GLOBAL_USER['user_id']."'"));

	// Непрочитанных сообщений
	$new = $db->fetch_array(
				$db->query ("SELECT COUNT(*) AS new
					FROM ".DB_PEREFIX."_messages 
					WHERE mes_user = '".$GLOBAL_USER['user_id']."'
					AND mes_read = 'new'"));					

	// Непрочитанных сообщений
	$send = $db->fetch_array(
				$db->query ("SELECT COUNT(*) AS send
					FROM ".DB_PEREFIX."_messages 
					WHERE mes_author = '".$GLOBAL_USER['user_id']."'"));
					
	// Массив для данных представления
	$data = array(
					'total'	=> $total['total'],
					'new'	=> $new['new'],
					'send'	=> $send['send']
				);
					
	// Определяем диапазон отображаемых сообщений
	$number = 30;
	$start = 0;
	if (isset($_GET['page']) && $_GET['page'] != '0') 
		$start = (intval ($_GET['page']) - 1) * $number;

	// Загружаем диапазон сообщений
	$read = $db->query("SELECT m.*, u.user_name
		FROM ".DB_PEREFIX."_messages AS m
		LEFT JOIN ".DB_PEREFIX."_users AS u ON (u.user_id = m.mes_author)
		WHERE mes_user = '".$GLOBAL_USER['user_id']."' 
		ORDER BY mes_id DESC LIMIT $start, $number");							
	
	// Если сообщения найдены
	if ($db->num_rows ($read) > 0) 
	{

		while ($message = $db->fetch_array($read)) 
		{
			$data['messages'][] = array (
											'id'		=> $message['mes_id'],
											'from_id'	=> $message['mes_author'],
											'from_name'	=> $message['user_name'],
											'status'	=> $message['mes_read'],
											'friend'	=> isset_friend($message['mes_author']),
											'subject'	=> $message['mes_header'],
											'date'		=> format_time($message['mews_date'])
			
										);
		}

		// Выводим представление 
		load_module_view('user', 'messages',  $data);		
		
		if ($data['total'] > $number) 
			print past_pages($start, $number, $data['total'], '/messages/');
	}
	else 
		site_error (_l('message_no_inbox'));
}

?>
